The solution according to one or more embodiments of the present invention relates to the data processing field. More specifically, this solution relates to the deployment of software images.
Deployment of software images is a commonplace activity in modern computing systems (for example, virtual data centers); generally speaking, a software image is a snapshot of a software structure that is installed on a mass memory of a computing machine. For example, software images are widely used in virtual appliances. A virtual appliance is a software appliance (i.e., a software solution for performing a specific user task being encapsulated in a pre-built, self-contained package), which is designed to run in a virtualized environment. For this purpose, the package of the virtual appliance (for example, conforming to the Open Virtualization Format, or OVF) comprises the definition of one or more virtual machines, or VMs (i.e., emulations by software of physical machines) and the corresponding software images, each one with one or more application programs (for implementing the software solution) and a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the application programs). Virtual appliances allow provisioning the corresponding software solutions in a very simple and fast way; this is especially useful in cloud computing environments (wherein multiple services are provided on demand).
Each software image is built by preparing a (reference) computing machine with the installation of the required operating system and application programs in a building environment. The computing machine is then configured for testing its correct operation in the building environment. Typically, this involves the assignment at the operating system level of an access identifier to the computing machine (for example, a hostname); moreover, especially in case of large virtual appliances with a multi-tier structure wherein multiple virtual machines cooperate for implementing the software solution (for example, conforming to the Service Oriented Architecture, or SOA), this also involves the connection at the application program level to the access identifiers of other computing machines (for addressing outbound communications thereto). The software image of the computing machine is then captured and stored into a shared repository, from which it may be copied and instantiated into any desired target environment.